var prifix = '';


var RESERVATIONCENTERURL = {                                                        //预约中心

    addReservation:{                                                                //添加预约
        store               : prifix + '/reserve/store',
    },
    reservationList:{                                                              //预约列表页面
        index   : prifix + '/reserve/index',                                         //预约列表
        edit    : prifix + '/reserve/edit',
        update  : prifix + '/reserve/update',                                      //更新诊室
        destroy : prifix + '/reserve/destroy',                                      //解除预约
        notify  : prifix + '/reserve/notify'                                        //发送短信
    },
    statistical:{                                                                   //统计页面
        doctor:{                                                                    //医生统计页面
            statistics: prifix + '/reserve/statistics/situation'                    //查询图表信息
        },
        admin:{
            visit: prifix + '/reserve/statistics/visit'
        }


    },
    doctorManagement:{                                                              //医生管理
        doctor:{                                                                    //医生页面
            store               : prifix + '/reserve/schedule/store',
            update              : prifix + '/reserve/schedule/update',
            plan                : prifix + '/reserve/schedule/plan',
            planOfMonth         : prifix + '/reserve/schedule/planOfMonth',
            storeWithAMonth     : prifix + '/reserve/schedule/storeWithAMonth',
            destroyMonth        : prifix + '/reserve/schedule/destroyMonth',
            planInMonthAfterNow : prifix + '/reserve/schedule/planInMonthAfterNow'
        },
        admin:{                                                                     //管理员页面
            index           : prifix + '/manage/doctor',
            store           : prifix + '/manage/doctor/store',
            update          : prifix + '/manage/doctor/update',
            destroy         : prifix + '/manage/doctor/destroy',
            edit            : prifix + '/manage/doctor/edit'
        }
    },
    patientPool:{
        doctor:{                                                                    //医生用户
            index    :   prifix + '/reserve/pool/index',
            reject   :   prifix + '/reserve/pool/reject',
            accept   :   prifix + '/reserve/pool/accept'
        },
        admin:{
            assignTo   :   prifix + '/reserve/pool/assignTo',
            doctors    :   prifix + '/reserve/pool/doctors'
        }
    },
    messageCenter:{
        index     :     prifix + '/reserve/message',
        unread    :     prifix + '/reserve/message/unread'
    }

};


    //confirm 弹窗  start
    function confirmModel(title,body,okBtn,cancelBtn,okHidden){
        if(!title){
            title='温馨提示';
        }
        if(!body){
            body='确定要删除吗？';
        }
        if(!okBtn){
            okBtn='确定';
        }
        if(!cancelBtn){
            cancelBtn='取消';
        }
        $.confirm({
            title:title,
            body: body,
            okBtn:okBtn,
            cancelBtn:cancelBtn,
            transition: true,
            okHidden:function(){
                okHidden();
            }
        });
    }
    //confirm 弹窗  end

    //alert 弹窗  start
    function alertModel(title,body){
        if(!title){
            title='温馨提示';
        }
        if(!body){
            body='出错了，再来一次！';
        }
        $.alert({
            title:title,
            body: body,
            transition: true
        });
    }
    //alert 弹窗  end

    // ajax 请求 start
    function ajaxGet(url, data, success, error){
        $.ajax({
            type:"get",
            url:url,
            data:data,
            dataType:"json",
            beforeSend:function(){
                $('.loading').removeClass('display-none');
            },
            success: function (data) {
                $('.loading').addClass('display-none');
                if (typeof data == 'string') {
                    data = $.parseJSON(data);
                }
                success(data);
            },
            error: function (x,t,e) {
                $('.loading').addClass('display-none');
                if (error === undefined) {
                    if (t == 'timeout') {
                        console.log('请求超时');
                    }
                } else {
                    error(x,t,e);
                }

            }
        });
    }

    function ajaxPost(url, data, success, error){
        $.ajax({
            type:"post",
            url:url,
            data:data,
            dataType:"json",
            beforeSend:function(){
                $('.loading').removeClass('display-none');
            },
            success: function (data) {
                $('.loading').addClass('display-none');
                if (typeof data == 'string') {
                    data = $.parseJSON(data);
                }
                success(data);
            },
            error: function (x,t,e) {
                $('.loading').addClass('display-none');
                if (error === undefined) {
                    if (t == 'timeout') {
                        console.log('请求超时');
                    }
                } else {
                    error(x,t,e);
                }

            }
        });
    }
    // ajax 请求 end

    // 页码函数方法  start
    function page(id,data,fun,param){
        var totalPages=Math.ceil(data.pagination.total/data.pagination.per_page);
        $('#'+id).jqPaginator({
            totalPages:totalPages,
            visiblePages:5,
            currentPage:data.pagination.current_page,
            first:'',
            last:'',
            onPageChange:function(e){
                param.page=e;
                fun(param);
            }
        })
    }
    // 页码函数方法  end

    // 日历限制最小(大)可选日期为当日  start
    var date=new Date();
    function formatDate(date) {
        var y = date.getFullYear();
        var m = date.getMonth() + 1;
        m = m < 10 ? '0' + m : m;
        var d = date.getDate();
        d = d < 10 ? ('0' + d) : d;
        return y + '-' + m + '-' + d;
    };
    $('.limitStartData').datepicker({
        startDate:formatDate(date)
    });
    $('.limitEndData').datepicker({
        endDate:formatDate(date)
    });
    // 日历限制最小(大)可选日期为当日  end

    //对一个日期相加（减）天数计算 方法  start
    function addDate(date,days){
        var d=new Date(date);
        d.setDate(d.getDate()+days);
        var month=d.getMonth()+1;
        var day = d.getDate();
        if(month<10){
            month = "0"+month;
        }
        if(day<10){
            day = "0"+day;
        }
        var val = d.getFullYear()+"-"+month+"-"+day;
        return val;
    }
    //对一个日期相加（减）天数计算 方法  end

    //将系统日期变为 yyyy-mm-dd h:m:s   格式   start
    function formatTen(num) {
        return num > 9 ? (num + "") : ("0" + num);
    }
    function formatDate(date,h,m,s) {
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var day = date.getDate();
        var hour = date.getHours();
        var minute = date.getMinutes();
        var second = date.getSeconds();
        var time=year + "-" + formatTen(month) + "-" + formatTen(day);
        if(h){
            time+=' '+hour;
            if(m){
                time+=':'+minute;
                if(s){
                    time+=':'+second;
                }
            }
        }
        return time
    }
    //将系统日期变为 yyyy-mm-dd h:m:s   格式   end

    //获取日期对应星期几  start
    function getWeek(data){
        var weekArr=['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
        var week=weekArr[new Date(data).getDay()];
        return week;
    }
    //获取日期对应星期几  end

    //模态框 层上层提示点击周围关闭层  start
    $('body').delegate('div.alertZindex','click',function(){
        $('.sui-modal-backdrop').removeClass('alertZindex');
    });
    //模态框 层上层提示点击周围关闭层  end

    //ie 低版本  maxLength 属性  start
    $('body').find('textarea').change(function () {
        var len = $(this).attr('maxLength');
        var val=$(this).val();
        $(this).val(val.substring(0, len));
    });
    $('body').find('input').change(function () {
        var len = $(this).attr('maxLength');
        var val=$(this).val();
        $(this).val(val.substring(0, len));
    });
    //ie 低版本  maxLength 属性  end


    //姓名复选框是否全选 start   todo 通用于预约中心和医生管理
    $('.reservationCenter-table thead th input.checkBox').click(function(){
        var inputList=$('#'+$(this).attr('data-id')).find('td input.checkBox');
        if($(this).is(':checked')){
            for(var i=0;i<inputList.length;i++){
                if(!($(inputList[i]).is('checked'))){
                    if(!($(inputList[i]).attr('disabled'))){
                        $(inputList[i]).attr('checked','checked');
                        $(inputList[i]).prop('checked',true);
                    }
                }
            }
        }else{
            for(var j=0;j<inputList.length;j++){
                $(inputList[j]).removeAttr('checked');
            }
        }
    });
    $('.reservationCenter-table tbody').delegate('td input.checkBox','click',function(){
        var inputList=$(this).parent().parent().parent().parent().find('td input:checkBox');
        var dataId=$(this).parent().parent().parent().parent().attr('id');
        var dataIdInput=$('.reservationCenter-table thead input[data-id="'+dataId+'"]');
        if($(this).is(':checked')){
            var checked=true;
            for(var i=0;i<inputList.length;i++){
                if(!($(inputList[i]).attr('disabled'))){
                    if(!($(inputList[i]).is(':checked'))){
                        checked=false;
                        break;
                        return;
                    }
                }
            }
            if(checked){
                dataIdInput.attr('checked','checked');
                dataIdInput.prop('checked',true);
            }
        }else{
            dataIdInput.removeAttr('checked');
        }
    });
    //姓名复选框是否全选 end



    //手机号11位 且 符合规则 监测  start
    $('input.phoneLength').bind('input.phoneLength propertychange',function(){
        var reg = /^\d+$/;
        if($(this).val().length>11){
            $(this).val($(this).val().slice(0,11));
        }else{
            if(!(reg.test($(this).val()))){
                $(this).val($(this).val().slice(0,$(this).val().length-1));
            }
        }
    });
    function checkPhone(val){
        var reg=/^1[345789]{1}\d{9}$/;
        if(val){
            val=val.trim();
            if(reg.test(val)){ return true; }
            else{ return false; }
        }
        else{ return true; }
    }
    //手机号11位 且 符合规则 监测  end

    //姓名 16个字符监测  start
    function chkstrlen(str){
        var strlen = 0;
        for(var i = 0;i < str.length; i++)
        {
            if(str.charCodeAt(i) > 255) //如果是汉字，则字符串长度加2
                strlen += 2;
            else
                strlen++;
        }
        return   strlen;
    }
    function checkName(nameStr){
        var reg = /^([\u4E00-\uFA29]*[0-9]*[a-z]*[A-Z]*)+$/;
        if(nameStr){
            nameStr=nameStr.trim();
            if ((reg.test(nameStr)) && (chkstrlen(nameStr)) ){ return true; }
            else { return false; }
        }
        else{ return true; }
    }
    //姓名 16个字符监测  end

    //密码  6-16位数字 字母  或者两者组合  start
    function checkPassword(pwd){
        var reg = /^[A-Za-z0-9]{6,16}$/;
        if(reg.test(pwd)){
            return true;
        }else {
            return false;
        }
    }
    //密码  6-16位数字 字母  或者两者组合  end

    // 检测两个时间大小 (第三个参数没有 默认 结束时间大于开始时间)  start
    function checkTwoDate(star_time,end_time,endLessStart){
        var now=new Date();
        if(star_time && end_time){
            // 结束时间
            var edate = end_time.split('-');
            var end = new Date(edate[0], edate[1]-1, edate[2]);
            // 开始时间
            var sdate = star_time.split('-');
            var start = new Date(sdate[0], sdate[1]-1, sdate[2]);
            if(endLessStart){
                if(end-start<=0){ return true; } else{ return false; }
            }else{
                if(end-start>=0){ return true; } else{ return false; }
            }
        }else {
            return true;
        }
    }
    // 检测两个时间大小 (第三个参数没有 默认 结束时间大于开始时间)  end


    //数字 最小 最大 且保留几位小数方法 start
    function dealNum(_this,min,Min,max,Max,fix){
        var num=parseFloat(_this.val());
        if(isNaN(num)){
            _this.val('');
        } else{
            if (num <= min) {
                _this.val(Min);
            } else if (num > max) {
                _this.val(Max);
            } else {
                _this.val(parseFloat(parseFloat(num).toFixed(fix)));
            }
        }
    }
    //数字 最小 最大 且保留几位小数方法 end

    //人数类型 1-999 输入框限制  start
    $('body').delegate('.peopleInput','blur',function(){
        dealNum($(this),1,1,999,999,0);
    });
    //人数类型 1-999 输入框限制  end


//  加载时请求数据
searchDoctorList($('#doctorManagementSearchBtn'));

// 添加医生按钮 点击   start
$('#addDoctorBtn').click(function(){
    $('#addDoctor input.emptyInput').val('');
    $('#addDoctorSaveBtn').attr('data-type','add');
    $('#doctorList').hide(300);
    $('#addDoctor').show(300);
});
// 添加医生按钮 点击   end

//医生列表中编辑按钮 点击 start
$('#doctorListBox').delegate('tbody td .editDoctorBtn','click',function(){
    var doctorId=$(this).parent().parent().attr('data-doctorId');
    var inputValArr={};
    var tdArr=$(this).parent().parent().find('td[data-name]');
    for(var i=0;i<tdArr.length;i++){
        inputValArr[$(tdArr[i]).attr('data-name')]=$(tdArr[i]).attr('data-value');
    }
    inputValArr.id=doctorId;
    var addInputArr=$('#addDoctor div.searchBox .form-control');
    for(var j=0;j<addInputArr.length;j++){
        $(addInputArr[j]).val(inputValArr[$(addInputArr[j]).attr('name')]);
    }
    //如果是系统管理员  把医院选择带过来并展示
    if($('#hospital').html()){
        $('#hospital').val($('#doctorList select[name="hospital_id"]').val());
    }
    $('#addDoctorSaveBtn').attr('data-type','edit');
    $('#password').attr('data-check','checkPassword');
    $('#doctorList').hide(300);
    $('#addDoctor').show(300);
    $('#role').change();
});
//医生列表中编辑按钮 点击 end

//添加医生 返回按钮  点击  start
$('#addDoctorBackBtn').click(function(){
    $('#addDoctor').hide(300);
    $('#doctorList').show(300);
});
//添加医生 返回按钮  点击  end

//角色更改  start
$('#role').change(function(){
    if($(this).val() === 'nurse'){
        $('#title').attr('disabled','disabled');
        $('#title option:last-child').show(10);
        $('#title').val('');
    }else{
        $('#title').removeAttr('disabled');
        $('#title option:last-child').hide(10);
        $('#title').val('1');
    }
});
$('#role').change();
//角色更改  end

//添加医生  保存按钮  点击  start
$('#addDoctorSaveBtn').click(function(){
    var addInputArr=$('#addDoctor div.searchBox .form-control');
    var result={};
    var isSave=true;
    if($('#addDoctorSaveBtn').attr('data-type') === 'edit'){
        if(!$('#password').val()){
            $('#password').removeAttr('data-check');
        }else{
            $('#password').attr('data-check','checkPassword');
        }
    }else{
        $('#password').attr('data-check','checkPassword');
    }
    result['hospital_id']=$('#addDoctor div.searchBox [name="hospital_id"]').val();
    for(var j=0;j<addInputArr.length;j++){
        var checkFun=$(addInputArr[j]).attr('data-check');
        var value=$(addInputArr[j]).val();
        if(checkFun){
            if(value){
                if(eval(checkFun+"(value)")){
                    result[$(addInputArr[j]).attr('name')]=value;
                }else{
                    var text='';
                    if(checkFun === 'checkName'){
                        text='姓名长度不能超过16个字符！';
                    }else if(checkFun === 'checkPhone'){
                        text='请输入正确的手机号！';
                    }else if(checkFun === 'checkPassword'){
                        text='密码长度为6至16位数字或字母的组合！';
                    }
                    alertModel('',text);
                    isSave=false;
                    break;
                }
            }else{
                alertModel('','请将信息填写完整后保存！');
                isSave=false;
                break;
            }
        }else{
            result[$(addInputArr[j]).attr('name')]=value;
        }
    }
    if(result.role === 'doctor'){
        if(!result.job){
            alertModel('','请选择职称！');
            isSave=false;
        }
    }else{
        result.job='';
    }
    var url='';
    if(result.id){
        url=RESERVATIONCENTERURL.doctorManagement.admin.update;     //todo  update 的地址
        if(!result.password){
            delete result['password'];
        }
    }else{
        delete result['id'];
        url=RESERVATIONCENTERURL.doctorManagement.admin.store;     //todo  store 的地址
    }
    if(isSave){
        ajaxPost(url, result, function(data){
            if(data.code == 10000){
                $('#addDoctor div.searchBox input.form-control').val('');
                $.alert({
                    title:'温馨提示',
                    body: '保存成功！',
                    transition: true,
                    okHidden:function(){
                        $('#addDoctorBackBtn').click();
                        $('#doctorManagementSearchBtn').click();
                    }
                });
            }else if(data.code === 40100){
                aClick();
            }else {
                alertModel('','保存失败，'+data.message);
            }
        }, function(){ })
    }
});
//添加医生  保存按钮  点击  end

//设置出诊日期框 点击 打开 设置诊室弹出框  start
$('#setVisitRoom').delegate('span','click',function(){
    $('#editClinic').modal('show');
});
//设置出诊日期框 点击 打开 设置诊室弹出框  end

// 查询列表方法  start
function searchDoctorList(_this){
    var name=_this.parent().parent().find('input[name="name"]').val();
    var phone=_this.parent().parent().find('input[name="phone"]').val();
    var hospital_id=_this.parent().parent().find('select[name="hospital_id"]').val();
    var result={name:name,phone:phone,hospital_id:hospital_id,page:1};
    if(checkName(name)){
        if(checkPhone(phone)){
            getDoctorList(result);
        }else{
            alertModel('','请输入正确的手机号！');
            return false;
        }
    }else{
        alertModel('','姓名长度不能超过16个字符！');
        return false;
    }
}
// 查询列表方法  end


//查询按钮  点击  start
$('#doctorManagementSearchBtn').click(function(){
    searchDoctorList($(this));
});
//查询按钮  点击  end

//请求列表 并渲染页面   start
function getDoctorList(result){
    ajaxGet(RESERVATIONCENTERURL.doctorManagement.admin.index, result, function(data){
        if (data.code === 10000) {
            var str='';
            for(var i=0;i<data.data.length;i++){
                str+='<tr data-doctorId="'+data.data[i].id+'"><td><lable>' +
                    '<input type="checkbox" class="checkBox">'+(i+1)+'</lable></td>' +
                    '<td data-name="name" data-value="'+data.data[i].name+'">'+data.data[i].name+'</td>';
                if(data.data[i].job.value){
                    str+='<td data-name="job" data-value="'+data.data[i].job.key+'">'+data.data[i].job.value+'</td>';
                }else{
                    str+='<td data-name="job" data-value="'+data.data[i].job.key+'"></td>';
                }
                str+='<td data-name="role" data-value="'+data.data[i].role.key+'">'+data.data[i].role.value+'</td>' +
                    '<td data-name="phone" data-value="'+data.data[i].phone+'">'+data.data[i].phone+'</td><td>' +
                    '<button type="button" class="btn btn-primary btn-outline editDoctorBtn">编辑</button></td></tr>'
            }
            $('#doctorManagementListBody').html(str);
            // 页码
            if(data.meta.pagination.total_pages>1){
                page('managementPager',data.meta,getDoctorList,result);
            }else{
                $('#managementPager').html('');
            }
        }else if(data.code === 40100){
            aClick();
        }else if(String(data.code) === '40001'){
            $('#doctorManagementListBody').html('<tr><td colspan="6">暂无数据</td></tr>');
            $('#managementPager').html('');
        }else{
            alertModel('','获取失败，'+data.message);
        }
    }, function(){ })
};
//请求列表 并渲染页面   end

//删除医生 点击按钮  start
$('#deleteDoctorBtn').click(function(){
    var doctorIdArr = getListId('doctorManagementListBody','data-doctorId');
    if (doctorIdArr.length) {
        confirmModel('','确定要删除吗？','','',function(){
            ajaxPost(RESERVATIONCENTERURL.doctorManagement.admin.destroy, {ids:doctorIdArr}, function(data){
                if(data.code == 10000){
                    $('#doctorManagementSearchBtn').click();
                    alertModel('','删除成功！');
                }else if(data.code === 40100){
                    aClick();
                }else {
                    alertModel('','删除失败，'+data.message);
                }
            }, function(){ })
        });
    }else{
        alertModel('','请先选择要删除的医生！');
    }
});
//删除医生 点击按钮  end

//操作栏  获取要修改的预约 ID  或者患者ID 等  start
function getListId(tableId,idName){
    var patientArr=[];
    var inputCheckBox=$('#'+tableId).find('td input.checkBox');
    for(var i=0;i<inputCheckBox.length;i++){
        if($(inputCheckBox[i]).is(':checked')){
            patientArr.push($(inputCheckBox[i]).parent().parent().parent().attr(idName));
        }
    }
    return patientArr;
};
//操作栏  获取要修改的预约 ID  或者患者ID 等  end
//退出跳转
function aClick() {
    //跳转
    window.location.pathname = "/manage/auth/logout";
    //清除缓存
    sessionStorage.clear();
    localStorage.clear();
};

